<?php
/* *
 * 功能：支付宝服务器异步通知页面
 * 版本：3.3
 * 日期：2012-07-23
 * 说明：
 * 以下代码只是为了方便商户测试而提供的样例代码，商户可以根据自己网站的需要，按照技术文档编写,并非一定要使用该代码。
 * 该代码仅供学习和研究支付宝接口使用，只是提供一个参考。


 *************************页面功能说明*************************
 * 创建该页面文件时，请留心该页面文件中无任何HTML代码及空格。
 * 该页面不能在本机电脑测试，请到服务器上做测试。请确保外部可以访问该页面。
 * 该页面调试工具请使用写文本函数logResult，该函数已被默认关闭，见alipay_notify_class.php中的函数verifyNotify
 * 如果没有收到该页面返回的 success 信息，支付宝会在24小时内按一定的时间策略重发通知
 */
define('ROOT_PATH', substr(dirname(__FILE__),0,strlen(dirname(__FILE__))-strlen('service')-1));
include(ROOT_PATH . '/eccore/ecmall.php');
require(ROOT_PATH . '/eccore/model/model.base.php');   //模型基础类

/* 定义配置信息 */
ecm_define(ROOT_PATH . '/data/config.inc.php');
ecm_define(ROOT_PATH . '/data/settings.inc.php');
/* 环境 */
define('CHARSET', substr(LANG, 3));
include_once 'mobilecommon.php';
include_once 'MessageService.php';

require_once("alipay.config.php");
require_once("lib/alipay_notify.class.php");
//计算得出通知验证结果
$alipayNotify = new AlipayNotify($alipay_config);
$verify_result = $alipayNotify->verifyNotify();

if($verify_result) {
	$out_trade_no = $_POST['out_trade_no'];

	//支付宝交易号
	$trade_no = $_POST['trade_no'];

	//交易状态
	$trade_status = $_POST['trade_status'];

	$total_fee = $_POST['total_fee'];

	$out_trade_no=explode('_', $out_trade_no);
	if(empty($out_trade_no[1])){
		echo "fail";
		exit();
	}
	if($_POST['trade_status'] == 'TRADE_FINISHED') {
		order_tb_charge($out_trade_no[1],$total_fee,$trade_no);
	}
	else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
		order_tb_charge($_POST['out_trade_no'],$out_trade_no[1],$total_fee,$trade_no);
	}

	//——请根据您的业务逻辑来编写程序（以上代码仅作参考）——

	echo "success";		//请不要修改或删除

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
else {
	//验证失败
	echo "fail";

	//调试用，写文本函数记录程序运行情况是否正常
	//logResult("这里写入想要调试的代码变量值，或其他运行的结果记录");
}

function order_tb_charge($out,$out_trade_no,$money,$outcode){
	$db=&db();
	$sql="select 1 from yk_recharge where yr_code='".$out."' and yr_type='支付宝'";
	$h=$db->getone($sql);
	if(empty($h)){
		$sql="insert into yk_recharge set yr_status='已充值',yr_out='".$out."',
		yr_money='".$money."',yr_user='".$out_trade_no."',yr_type='支付宝',yr_outcode='".$outcode."',yr_time='".gmtime()."'";

		$db->query($sql);

		if($db->insert_id()){
			$sql="update yk_account set ya_money=ya_money+".$money.",ya_all=ya_all+".$money." where ya_tid='".$out_trade_no."'";
			$db->query($sql);
		}
	}
}
?>